package org.nutz.ioc;

/**
 * 对象编织器
 * 
 * @author zozoh(zozohtnt@gmail.com)
 */
public interface ObjectWeaver {

	/**
	 * 根据容器构造时，为一个对象填充字段
	 * 
	 * @param ing
	 *            容器构造时
	 * @param obj
	 *            对象，要被填充字段
	 * 
	 * @return 被填充后的字段
	 */
	<T> T fill(IocMaking ing, T obj);

	/**
	 * 根据自身内容创建一个对象，并触发创建事件
	 * 
	 * @param ing
	 *            容器构造时
	 */
	Object born(IocMaking ing);
	
	/**
	 * 为对象触发 CREATE 事件
	 * 
	 * @param obj
	 *            对象
	 */
	Object onCreate(Object obj);

}
